package view;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import model.CiiBay;
import model.Gebruiker;
import model.Persoon;

/**
 * Bij deze view kan een gebruiker worden geblokeerd
 * @author Dennis
 * @author Jaap
 *
 */
@SuppressWarnings("serial")
public class BlokkeerView extends JPanel implements Observer {

	private JButton blokkeer;
	private JComboBox blokkeerVeld;
	private CiiBay ciiBay;
	private JLabel label;
	private ArrayList<String> gebruiker;

	public BlokkeerView(CiiBay cb) {
		this.ciiBay = cb;
		ciiBay.addObserver(this);
		setLayout(new GridBagLayout());
		gebruiker = new ArrayList<String>();
		vulArrayList();
		blokkeerVeld = new JComboBox(gebruiker.toArray());
		blokkeer = new JButton("Blokkeer");
		blokkeer.setBackground(Color.ORANGE);
		blokkeerVeld.setSize(100, 20);
		label = new JLabel("Selecteer gebruiker:  ");
		GridBagConstraints c = new GridBagConstraints();
		c.fill = GridBagConstraints.VERTICAL;
		c.gridx = 0;
		c.gridy = 0;
		add(label, c);
		c.gridx = 1;
		add(blokkeerVeld,c);
		c.gridy = 1;
		add(blokkeer,c);
		this.setBackground(Color.ORANGE);
		blokkeer.addActionListener(new toeVoegKnopHandler());

	}
	
	/**
	 * Vult de arraylist van gebruikers met de namen van de gebruikers uit de klasse CiiBay
	 * @author Jaap
	 */
	public void vulArrayList(){
		gebruiker.clear();
		for(Persoon p: ciiBay.getGebruikers()) {
			if(p instanceof Gebruiker) {
				if(!((Gebruiker) p).getBlokkeer()) {
				gebruiker.add(p.getNaam());
				}
			}
		}
	}

	class toeVoegKnopHandler implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String blokkeer = blokkeerVeld.getSelectedItem().toString();
			String melding = ciiBay.gebruikerBlokkeren(blokkeer);
			
			JOptionPane.showMessageDialog(null, melding, "Melding",
					JOptionPane.INFORMATION_MESSAGE);
		}
	}
	
	/**
	 * Vult de keuzelijst van gebruikers met gebruikers die nog niet geblokkeerd zijn.
	 * @author Jaap
	 */
	@Override
	public void update(Observable arg0, Object arg1) {
		vulArrayList();
		String message = (String) arg1;
		if(message.equals("blokkeren")){
			blokkeerVeld.removeAllItems();
			for(Object obj : gebruiker.toArray()){
				blokkeerVeld.addItem(obj);
			}
			revalidate();
			repaint();
		}
	}
}
